'use strict'

define(['jquery', 'bootstrap', 'select2', 'datetimepicker', 'datetimepickerCN', 
        'validate', 'validate.en', 'shiftform', 'ajaxTab',
        'uploader', 'plupload', 'qiniu'], function($) {
  return {
    init : function(){
      
     this.initPage();
        
     this.edit();
     
     this.indentify();
     
     this.initEditCover();
        
    },
    
    initPage: function(){
        
        $(".ajax-tab").ajaxtab();
    },
    
    edit : function() {
        $(document).on('shown.bs.modal', '#coupon-batch-edit', function(e){
          
          var selectedDateType = $('select[name="inputExpireType"]').find("option:selected").val();
            
            if(selectedDateType == 'FIXED_DATE') {
              $("#effectiveStartDate").removeClass('hide');
              $("#effectivEndDate").removeClass('hide');
              $("#effectiveDays").addClass('hide');
            } else {
              $("#effectivEndDate").addClass('hide');
                $("#effectiveStartDate").addClass('hide');
                $("#effectiveDays").removeClass('hide');
            }
            
          $('select[name="inputExpireType"]').change(function(e){
                if(e.val == "FIXED_DATE") {
                  $("#effectivEndDate").removeClass('hide');
                  $("#effectiveStartDate").removeClass('hide');
                  $("#effectiveDays").addClass('hide');
                  $("input[name='effectiveDays']").val("0");
                }else {
                  $("#effectivEndDate").addClass('hide');
                  $("#effectiveStartDate").addClass('hide');
                  $("#effectiveDays").removeClass('hide');
                }
              });
            
            $(e.currentTarget).find('form[data-validate="true"]').bt_validate()  //bind validate
            
            var $form = $(e.currentTarget).find("form")                          //bind shiftform
            $form.shiftform({
              beforeSubmit : function(el) {
                $form.trigger("validate.ajax.submit");
                return $.bt_validate.result[$.bt_validate.form_id]
              }
            })
          })
      },
      
      indentify : function() {
          $(document).on('shown.bs.modal', '#coupon-batch-identify', function(e){
              
              $(e.currentTarget).find('form[data-validate="true"]').bt_validate()  //bind validate
              
              var $form = $(e.currentTarget).find("form")                          //bind shiftform
              $form.shiftform({
                beforeSubmit : function(el) {
                  $form.trigger("validate.ajax.submit");
                  return $.bt_validate.result[$.bt_validate.form_id]
                }
              })
            })
        },
        
      initEditCover: function(){
          var that = this;
          
          $(document).on("shown.bs.modal","#editCover", function(e) {
              var $form = $(e.currentTarget).find("form");
              
                that.initUpload();
                
                $form.bt_validate();
                
                $form.shiftform({
                  beforeSubmit : function(el) {
                    $('form').trigger("validate.ajax.submit");
                    return $.bt_validate.result[$.bt_validate.form_id]
                  }
                });
          })
               
      },
    
      initUpload: function() {
          var imgSrc = $(".upload-cover").find("img").attr("src");
            if(imgSrc == null || imgSrc == undefined) {
              $(".upload-cover").find("img").addClass("hide");
            }
            
            
            $(".upload-cover").hover(function(){
              $(".upload-cover .edit-btn").addClass("in");
            },function(){
              $(".upload-cover .edit-btn").removeClass("in");
            });
            
            $.ajax({
              
              url: window.__CTX__.cloudUptoken,
              // The name of the callback parameter, as specified by the YQL service
              jsonp: "callback",
              // Tell jQuery we're expecting JSONP
              dataType: "jsonp",
              // Work with the response
              success: function( response ) {
                var uploaderCover = Qiniu.uploader({
                  runtimes: 'html5,flash,html4',
                  browse_button: 'pickCover',
                  uptoken: response.token,
                  domain: 'http://upload.qiniu.com/',
                  max_file_size: '4mb',
                  max_retries: 3,
                  chunk_size: '2mb',
                  save_key: true,
                  auto_start: true,
                  init: {
                    'UploadProgress': function(up, file) {
                      $('#messageCover').removeClass("hide");
                      $(".edit-btn").addClass("hide").prop("disabled", true);
                      $('#messageCover').html("正在上传图片，请稍后");
                      $('#submitBtn').attr("disabled", "disabled");
                    },
                    'FileUploaded': function(up, file, info) {
                      var res = $.parseJSON(info);
                      var cover_box = '';
                      $('#coverPreview').attr("src", window.__CTX__.cloudProd + "/" + res.key + "-0.6");
                      $('#coverPreviewList').css("display", "block");
                      $('#cover').val(res.key);
                      $('#messageCover').html("加载图片完成");
                      setTimeout(function() {
                        $('#messageCover').addClass("hide");
                        $(".edit-btn").addClass("fade").removeClass("hide").prop("disabled", false).html("<span class='glyphicon glyphicon-repeat' aria-hidden='true'></span>&nbsp;&nbsp;重新上传");
                      }, 2000);
                      $('#submitBtn').removeAttr('disabled');
                    },
                    'Error': function(up, err, errTip) {
                      $('#messageCover').html("图片上传异常，请稍后重试");
                    }
                  }
                });
              }
            });
        }
        
      
   }
})
